Unity上のモーションでUE4のモデルを動かしてみた
概要
近年、Motion Capture や Vtuber などが非常に流行っていて、UnityとUE4両方経験がある私もその辺に興味があるので、モーション検知などをやってみたかった。
UnityよりUE4が個人の好みなので、実際UE4上のモデルをモーションで動かしたいと思います。いろいろ調べたら、無料ないい方法が少ないらしいです。
今回はUnityのモーション検知ソフト経由、UE4上のモデルをモーションで動かす記事です。
全体のイメージは :
1.ThreeDPoseTracker(Unity) でモーション検知
2.VMCtoMOP(Unity) 検知したモーションをUE4に使えるデータに転換
3.MopUE4 というプラグインで転換したモーションでUE4のモデルを動かす
マシン環境
CPU : Intel i7-6920HQ
GPU : AMD Radeon Pro 460
Memory : 16GB
System : Windows 10 (with .NET 5 installed)
IDE : Visual Studio 2019 Community
Editor : Visual Studio Code
Terminal : Windows Terminal (or Command Prompt)
事前に用意するツール
- Unreal Engine (v4.26以降)
- Quixel Bridge
- この文章の骨格認識ツール(Unity):
ThreeDPoseTracker_Win_x64_v0_4_0.zip -
このGithubリンクにあるVMCからMOPに転換するツール(Unity) :
VMCtoMOP.zip -
このGithubリンクにあるUE4用のMOP Plugin(C++ for UE4) :
MopUE4-0.1.0
プロジェクト作成とプラグイン追加
まず、UE4を起動して、新しいGameプロジェクトを作成します。
そして、OSC(Open Sound Control) と Control Rig 二つプラグインを有効にし、プロジェクトを一回閉じます。
事前用意したMopUE4-0.1.0を開いて、Plugins
フォルダをさっき閉じたUE4プロジェクトフォルダに展開します。再度UE4プロジェクトを起動したら、プラグインにMopが追加されるはずなので、それを有効化します。(もし再起動が提示されたら、一回再起動しても構いません)
UE4プロジェクトにモデルの導入(Quixel Bridge: MetaHuman)
Quixel Bridge を起動し、MetaHuman Presetsに入ります。
好きなモデルを選んで(こちの場合はKai
)、ダウンロードしたら、起動中のUE4プロジェクトにExport
します。
Export
が終ったら、いくつワーニングが出ますので、すべてEnable Missingを押します。(もし再起動が提示されたら、一回再起動しても構いません)
設定調整と実行
UE4に追加されたMetaHumanのBlueprint
を開きます(こちの場合はBP_Kai
)。
まずClass Settingsの部分にあるParent ClassをBP_MopPawn
にします。
そしてComponentsタブにあるBodyを選んで、Details -> Animationのブロックにある
Animation ModeをUse Animation Blueprint
にし、その操作でAnim Classの設定が出てきて、Anim ClassをABP_MetaHuman_RotationOnly
にします。
修正したモデル(こちの場合はBP_Kai
)とMOPプラグインで追加されたBP_Receiver
をシーンに入れます。
ThreeDPoseTrackerとVMCtoMOPを展開し、ThreeDPoseTracker.exe
とVMCtoMOP.exe
を実行します。
ThreeDPoseTrackerのConfigurationにあるPort
番号をVMCtoMopのReceive Port
に記入し、VMCtoMopのSend Port
をUE4プロジェクトのシーンにあるBP_Receiver
の Mop -> Port
に記入します。
BP_Kai
のMop Reiceiver
をさっきのBP_Receiver
にします。
UE4プロジェクトをPlay
します。
ThreeDPoseTrackerのSource DeviceをMovie File
にし、Load Movide
ボタンで事前用意したダンス動画をロードして、ThreeDPoseTracker -> VMCtoMOP -> UE4の順番でモーションデータが転送されてます。(PCスペックが高くないので、最後UE4のモーションは少しラグしている)
上記の例は動画でモーションテストをしましたが、ThreeDPoseTrackerのSource Deviceをカメラにするのも結果は一緒です。
以上です。